home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / UTILS / GENGRAPH.ZIP / MAPSEGA.CPP next >
Encoding:
C/C++ Source or Header  |  1996-09-11  |  2.9 KB  |  128 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <ctype.h>
  5. #include <alloc.h>
  6. #include <dos.h>
  7.  
  8. void EndIt(void);
  9.  
  10. FILE *handle;
  11. FILE *handle2;
  12. char filename1[13];
  13. char filename2[13];
  14. short far *planeptr;
  15. short far *tmpptr;
  16. short far *mapptr;
  17. short far *mptr;
  18. long filelength;
  19. int paletteindex;
  20.  
  21. struct mapheader
  22. {
  23.     int  Version;
  24.     int  Width;
  25.     int  Height;
  26. };
  27.  
  28. mapheader MapHeader;
  29.  
  30. int main(){
  31.  
  32.     clrscr();
  33.     printf("WGT Map to Sega converter.\n");
  34. EnterName:
  35.     printf("\nEnter the name of map file (include extension)> ");
  36.     scanf("%s",&filename1);
  37.     if (filename1=="")
  38.     {
  39.         printf("Please enter a map file name.\n");
  40.         goto  EnterName;
  41.     }
  42. EnterData:
  43.     printf("\nEnter the name of data file to save (include extension)> ");
  44.     scanf("%s",&filename2);
  45.     if (filename2=="")
  46.     {
  47.         printf("Please enter a data file name.\n");
  48.         goto  EnterData;
  49.     }
  50.  
  51. EnterPaletteNumber:
  52.     printf("\nEnter the Palette number for these tiles.> ");
  53.     scanf("%i", &paletteindex);
  54.     if (paletteindex<0 || paletteindex>3)
  55.     {
  56.         printf("Please enter a number between 0 and 3.\n");
  57.         goto  EnterPaletteNumber;
  58.     }
  59.  
  60.     handle=fopen(filename1,"rb");
  61.     if (handle==NULL)
  62.     {
  63.         printf("%s does not exist. Please enter another map file name.\n",filename1);
  64.         goto  EnterName;
  65.     }
  66.     handle2=fopen(filename2,"wb");
  67.  
  68.     if (handle2==NULL)
  69.     {
  70.         printf("Could not create %s. Please enter another data file name.\n",filename2);
  71.         fclose(handle);
  72.         goto  EnterData;
  73.     }
  74.  
  75.     planeptr=(short *)farmalloc(32000);
  76.     tmpptr=planeptr;
  77.  
  78.     mapptr=(short *)farmalloc(32000);
  79.     mptr=mapptr;
  80.  
  81.     fread(&MapHeader,sizeof(mapheader),1,handle);
  82.  
  83.     fseek(handle,0,SEEK_END);
  84.     filelength=ftell(handle)-sizeof(mapheader);
  85.     rewind(handle);
  86.  
  87.     if (filelength>32000)
  88.     {
  89.         printf("Invalid Map File.\n");
  90.         EndIt();
  91.     }
  92.  
  93.     fseek(handle,sizeof(mapheader),SEEK_SET);
  94.     fread(tmpptr,1,filelength,handle);
  95.     fclose(handle);
  96.  
  97.     if ((MapHeader.Width != 32) || (MapHeader.Height != 32)) EndIt();
  98.  
  99.     for (int col = 0; col < 32; col++)
  100.     {
  101.         for (int row = 0; row < 32; row++)
  102.         {
  103.             unsigned short tile = *(tmpptr++);
  104.             *mptr        = ((tile * 4)     << 8) | (paletteindex << 5);
  105.             *(mptr + 64) = ((tile * 4 + 1) << 8) | (paletteindex << 5);
  106.             *(mptr + 1)  = ((tile * 4 + 2) << 8) | (paletteindex << 5);
  107.             *(mptr + 65) = ((tile * 4 + 3) << 8) | (paletteindex << 5);
  108.             mptr += 2;
  109.         }
  110.         mptr +=64;
  111.     }
  112.     fwrite(mapptr, 1, 128 * 64,handle2);
  113.  
  114.     fclose(handle2);
  115.  
  116.     EndIt();
  117.     return 1;
  118. }
  119.  
  120. void EndIt(void)
  121. {
  122.     fclose(handle);
  123.     fclose(handle2);
  124.     farfree(planeptr);
  125.     farfree(mapptr);
  126.     exit(0);
  127. }
  128.